package com.zmn.oms.zmn.business.interfaces.quotation3;

import com.zmn.oms.common.dio.quotation3.ArtificialPromDRO;
import com.zmn.oms.common.dio.quotation3.ArtificialPromListQuery;
import com.zmn.oms.common.dio.quotation3.CheckReportDIO;
import com.zmn.oms.common.dio.quotation3.ConfirmFaultInfoDIO;
import com.zmn.oms.common.dio.quotation3.MaintainFaultOptionQuery;
import com.zmn.oms.common.dio.quotation3.MaintainOptionDRO;
import com.zmn.oms.common.dro.quotation3.CheckReportDRO;
import com.zmn.oms.common.dro.quotation3.OrderAmountDRO;
import com.zmn.oms.common.dro.quotation3.UserConfirmedFaultInfoDRO;
import com.zmn.oms.common.exception.OmsBaseException;
import io.swagger.annotations.ApiOperation;

import java.util.List;

/**
 * @author sunlife
 * @date:2021/12/1 6:44 下午
 * description:
 */
public interface OrderQuotation3ListBService {

    /**
     * 获取故障确认信息
     * @param orderId
     * @param workId
     * @return
     */
    UserConfirmedFaultInfoDRO getUserConfimedFaultInfo(Long orderId, Long workId) throws OmsBaseException;

    /**
     * 获取优惠价格
     * @param checkReportDIO
     */
    Integer getDiscount(CheckReportDIO checkReportDIO) throws OmsBaseException;

    /**
     * 获取检修报告
     * @param orderId
     * @return
     */
    @ApiOperation("获取检修报告")
    CheckReportDRO getCheckReport(Long orderId, Long workId) throws OmsBaseException;

    OrderAmountDRO refreshOrderAmount(Long orderId, Long workId, Integer engineerDiscountId) throws OmsBaseException;

    OrderAmountDRO refreshOrderAmount2(Long orderId, Long workId, Integer discountAmount) throws OmsBaseException;

    OrderAmountDRO getOrderAmount(Long orderId, Long workId, Integer discountAmount) throws OmsBaseException;

    List<ArtificialPromDRO> listArtificialProm(ArtificialPromListQuery query) throws OmsBaseException;

    /**
     * 描述: 根据故障id和检测项目id选项id返回应该选择的选项
     *
     * @param maintainFaultOptionQuery 维护故障选择查询
     * @return {@link List }<{@link MaintainOptionDRO }>
     * @author chengguang
     * @since 2022/08/15
     */
    List<MaintainOptionDRO> listMaintainOptionByMfoQuery(MaintainFaultOptionQuery maintainFaultOptionQuery) throws OmsBaseException;


    /**
     * 处理优惠
     * @param orderId
     * @param workId
     * @param discountAmount
     * @return
     */
    Integer processArtificial(Long orderId,Long workId,Integer discountAmount) throws OmsBaseException;
}
